home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Your Apple Games Gallery 1
/
Your Apple Games Gallery (Side B)(MicroSPARC, Inc.)(1988).do
/
CONCENTRATION.bas
< prev
next >
Wrap
BASIC Source File
|
2021-12-11
|
9KB
|
112 lines
10 REM **********************
20 REM * CONCENTRATION *
30 REM * BY STEVEN WONG *
40 REM * COPYRIGHT (C) 1984 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA 01742 *
70 REM **********************
80 REM
90 LOMEM: 24576: GOTO 760
100 REM
110 II = II -1:TT = INT(II/15): IF II/15 < >TT THEN RETURN
120 & POP 75,2:J = TT >9: IF TT = 5 THEN FF = 112
130 POKE 1892,TT -10 *J +FF: IF TT <20 THEN POKE 1891,FF +J
140 IF TT THEN RETURN
150 OF = 1: POP : RETURN
160 I = FRE(0):HP = POS(0) +1:I$ = ""
170 INVERSE : PRINT " ";: NORMAL : PRINT BS$;
180 I = PEEK(KB) -128: IF TF THEN GOSUB 110
190 IF I <0 THEN 180
200 POKE KR,0: & POP I +50,2:A$ = CHR$(I): IF I = 13 AND LEN(I$) THEN PRINT " ";:I = FRE(0): RETURN
210 IF ( LEN(I$) >6 OR I <33) AND I < >8 THEN 170
220 IF I < >8 THEN PRINT A$;:I$ = I$ +A$: GOTO 170
230 IF TF THEN GOSUB 110: GOSUB 110
240 IF LEN(I$) <2 THEN HTAB HP: PRINT " ";: HTAB HP: GOTO 160
250 PRINT BS$" "BS$BS$;:I$ = LEFT$(I$, LEN(I$) -1): GOTO 170
260 A = ASC( LEFT$(I$,1)) -64:B = VAL( RIGHT$(I$,1))
270 IF A <1 OR A >4 OR B <1 OR B >6 OR LEN(I$) < >2 THEN EF = 1: RETURN
280 C = L(A,B): IF M1 = A AND M2 = B OR C = -1 THEN EF = 1: RETURN
290 FOR I = 1 TO 5: & POP I *10 +200,10: NEXT :J = X(B):K = Y(A):T1 = 14
300 HCOLOR= 4:X1 = J -18:Y1 = K -14: FOR I = Y1 +15 TO Y1 +30: HPLOT X1,I TO X1 +36,I
310 HPLOT X1,I +14 -T1 TO X1 +36,I +14 -T1:T1 = T1 +2: NEXT : HCOLOR= SC(C): DRAW C AT J -DX(C),K -DY(C): RETURN
320 FOR J = 1 TO 250: NEXT : RETURN
330 FOR J = 1 TO 500: NEXT : RETURN
340 EF = 0:FF = 176:II = 299:M1 = 0:M2 = 0:OF = 0: VTAB 23: HTAB 20: PRINT "20"
350 FOR I = 21 TO 24: VTAB I: HTAB 1: PRINT SPC( 18): NEXT : VTAB 21: HTAB 1: RETURN
360 A = M1:B = M2: GOSUB 410:A = M3:B = M4: GOSUB 410
370 CALL 54915: ON PN GOTO 750,740
380 VTAB 23: IF PN = 1 THEN S1 = S1 +TS:S1 = S1 *(S1 >0):I = S1
390 IF PN = 2 THEN PRINT :S2 = S2 +TS:S2 = S2 *(S2 >0):I = S2
400 HTAB 36: PRINT RIGHT$("000" + STR$(I),4);: RETURN
410 & POP 150,10: & POP 200,10: & POP 250,10:J = X(B):K = Y(A):X1 = J -18:X2 = J -14:Y1 = K -14:T1 = 30:T2 = 22
420 FOR I = Y1 TO Y1 +15: HCOLOR= 4: HPLOT X1,I TO X1 +36,I: HPLOT X1,I +T1 TO X1 +36,I +T1:T1 = T1 -2: IF I <K -10 THEN NEXT
430 HCOLOR= 5: HPLOT X2,I TO X2 +28,I: HPLOT X2,I +T2 TO X2 +28,I +T2:T2 = T2 -2: NEXT : RETURN
440 POKE KR,0: VTAB 12: HTAB 20: PRINT "09": POKE -16303,0: GOSUB 330:I = 100
450 IF PEEK(KB) <128 THEN I = I -1: IF I THEN & POP 150 -I,3: POKE 1468, INT(I/10) +176: GOTO 450
460 POKE KR,0: GOSUB 320: & POP 50,100: GOSUB 320: POKE -16304,0: & POP 100,40: RETURN
470 VTAB 24: HTAB 1: PRINT "A MATCH!";: FOR I = 10 TO 230 STEP 10: & POP I,3: & POP I +20,3: & POP I,10: NEXT : GOTO 330
480 VTAB 24: HTAB 1: PRINT "CORRECT!";: FOR I = 10 TO 150: & POP I,2: NEXT : GOSUB 330:TS = 25 +TT *5: GOTO 380
490 VTAB 24: HTAB 1: PRINT "WRONG ANSWER!";: FOR I = 10 TO 150 STEP 10: & POP I,10: & POP 1,15: NEXT : GOSUB 330:TS = -5: GOTO 380
500 VTAB 24: HTAB 1: PRINT "SORRY, NO MATCHES!";: FOR I = 1 TO 5: & POP 100,20 +I: & POP 150,20 -I: NEXT : GOSUB 330:TS = -10: GOTO 380
510 VTAB 24: HTAB 1: PRINT "TIME'S UP";: FOR I = 200 TO 100 STEP -10: & POP I,10: & POP 50,5: GOSUB 330:TS = -15: GOTO 380
520 VTAB 24: HTAB 1: PRINT "ILLEGAL MOVE!";: FOR I = 1 TO 5: & POP 170 +10 *I,60 +I: NEXT : GOSUB 330:TS = -20: GOTO 380
530 VTAB 21: HTAB 1: GOSUB 350: IF S1 = S2 THEN FLASH : PRINT " TIE GAME ": NORMAL : GOTO 560
540 IF S1 >S2 THEN INVERSE : PRINT P1$;: NORMAL : PRINT " DEFEATS": PRINT P2$", "S1" TO "S2: GOTO 560
550 PRINT P2$" DEFEATS": INVERSE : PRINT P1$;: NORMAL : PRINT ", "S2" TO "S1
560 VTAB 24: PRINT "PLAY AGAIN? ";: GET A$: PRINT A$: IF A$ < >"N" THEN RUN
570 TEXT : HOME : END
580 GOSUB 350:N1 = FN I(LE):N2 = FN I(LE):I = INT( RND(1) *4) +1: ON I GOTO 590,600,620,620
590 PRINT "ADDITION:":N3 = N1 +N2:I = 43: GOTO 640
600 PRINT "SUBTRACTION:": IF N2 >N1 THEN I = N2:N2 = N1:N1 = I
610 N3 = N1 -N2:I = 45: GOTO 640
620 N1 = INT(N1/2):N2 = INT(N2/2): IF I = 3 THEN PRINT "MULTIPLICATION:":N3 = N2 *N1:I = 42: GOTO 640
630 PRINT "DIVISION":N3 = N1:N1 = N1 *N2:I = 47: GOTO 640
640 PRINT N1 CHR$(I)N2"=";: GOSUB 160: IF OF THEN GOSUB 510: GOTO 360
650 IF VAL(I$) < >N3 THEN VTAB 23: HTAB HP: FLASH : PRINT N3: NORMAL : GOSUB 490: GOTO 360
660 GOSUB 480:L(M1,M2) = -1:L(M3,M4) = -1:CS = 0: RETURN
670 PRINT "'S TURN": IF CS THEN GOSUB 440
680 CS = 1: VTAB 22: HTAB 1: PRINT "MOVE 1: ";: GOSUB 160: IF OF THEN GOSUB 510: GOTO 370
690 GOSUB 260:M1 = A:M2 = B: IF EF THEN GOSUB 520: GOTO 370
700 VTAB 23: HTAB 1: PRINT "MOVE 2: ";: GOSUB 160: IF OF THEN GOSUB 510:A = M1:B = M2: GOSUB 410: GOTO 370
710 GOSUB 260:M3 = A:M4 = B: IF EF THEN GOSUB 520:A = M1:B = M2: GOSUB 410: GOTO 370
720 IF L(M1,M2) < >L(M3,M4) THEN GOSUB 500:A = M1:B = M2: GOSUB 410:A = M3:B = M4: GOSUB 410: GOTO 370
730 GOSUB 470: GOTO 580
740 GOSUB 340:PN = 1: INVERSE : PRINT P1$;: NORMAL : GOSUB 670:NU = NU +1: ON (NU = 12) +1 GOTO 740,530
750 GOSUB 340:PN = 2: PRINT P2$;: GOSUB 670:NU = NU +1: ON (NU = 12) +1 GOTO 750,530
760 TEXT : HOME : IF PEEK(16384) < >32 THEN PRINT CHR$(4)"BLOAD M.SHAPES"
770 POKE 48,170: HLIN 9,30 AT 8: HLIN 9,30 AT 20: VLIN 9,19 AT 8: VLIN 9,19 AT 31
780 VTAB 7: HTAB 12: PRINT "MATH CONCENTRATION": PRINT : HTAB 14: PRINT "BY STEVEN WONG"
790 POKE 1013,76: POKE 1014,0: POKE 1015,64: POKE 230,32: POKE 232,48: POKE 233,64: CALL 62450
800 I = 12: DIM A(I),B(I),DX(I),DY(I),SC(I):KB = -16384:KR = -16368:S1 = 100:S2 = 100:BS$ = CHR$(8)
810 VA(1) = 10:VB(1) = 2:VA(2) = 25:VB(2) = 5:VA(3) = 50:VB(3) = 10: DEF FN I(LE) = INT( RND(1) *VA(LE) +VB(LE))
820 FOR I = 1 TO 3:X(I) = 22 +(I -1) *42:X(I +3) = 150 +X(I): NEXT
830 FOR I = 1 TO 4:Y(I) = 19 +(I -1) *33: NEXT : FOR I = 1 TO 12: READ SC(I),DX(I),DY(I): NEXT
840 DATA 3,8,6,3,9,9,3,9,3,7,7,8,3,9,2,7,9,4,3,7,8,3,14,4,3,9,9,7,8,6,3,10,9,7,10,2
850 FOR I = 1 TO 12:A(I) = I:B(I) = I: NEXT : FOR I = 1 TO 12:J = INT( RND(1) *12 +1)
860 K = INT( RND(1) *12 +1):T = A(I):A(I) = A(J):A(J) = T:T = B(I):B(I) = B(K):B(K) = T: NEXT
870 FOR J = 1 TO 3: FOR K = 1 TO 4:I = K +(J -1) *4:L(K,J) = A(I):L(K,J +3) = B(I): NEXT : NEXT : POKE KR,0
880 VTAB 22: HTAB 4: PRINT "-> PRESS ANY KEY TO BEGIN <-";
890 FOR I = 1 TO 3: & POP 100 -I,2: HTAB 3 +I: PRINT "->";: IF PEEK(KB) >128 THEN 930
900 HTAB 37 -I: PRINT "<-";: GOSUB 320: NEXT : HTAB 4: PRINT SPC( 4): HTAB 34: PRINT SPC( 4)
910 FOR I = 1 TO 3: & POP 100 -I,2: HTAB 7 -I: PRINT "<-";: IF PEEK(KB) >128 THEN POKE KR,0: CALL 54915: GOTO 930
920 HTAB 33 +I: PRINT "->";: GOSUB 320:J = RND(1): NEXT : GOTO 880
930 HOME : INVERSE : PRINT SPC( 11)"MATH CONCENTRATION" SPC( 12)"COPYRIGHT (C) 1984 BY MICROSPARC, INC ": NORMAL
940 VTAB 5: PRINT "MATH CONCENTRATION IS THE TIMELESS GAME OF CONCENTRATION WITH AN ADDED TWIST."
950 PRINT : PRINT "THE OBJECT OF THE GAME IS STILL TO MATCHSHAPES, BUT A MATH PROBLEM MUST ALSO BE"
960 PRINT "CORRECTLY ANSWERED TO WIN POINTS.": PRINT : PRINT "TO ADD TO THE EXCITEMENT, THERE IS A"
970 PRINT "TWENTY SECOND TIME LIMIT IN WHICH THE TWO TASKS MUST BE COMPLETED."
980 PRINT : PRINT "ENTER YOUR NAMES AND WE'LL BEGIN...": VTAB 19: HTAB 1: PRINT "PLAYER 1'S NAME? ";: GOSUB 160:P1$ = I$
990 VTAB 21: HTAB 1: CALL -868: PRINT "PLAYER 2'S NAME? ";: GOSUB 160:P2$ = I$: IF P1$ = P2$ THEN 990
1000 VTAB 23: HTAB 1: INVERSE : PRINT "1=EASY 2=MODERATE 3=HARD": NORMAL
1010 VTAB 24: HTAB 1: CALL -868: PRINT "WHAT LEVEL (1-3)? ";: GOSUB 160:LE = VAL(I$): IF LE <1 OR LE >3 THEN 1010
1020 GOSUB 330: & POP 81,32: & POP 77,128: & POP 81,128: & POP 102,64: & POP 121,128: & POP 91,64: GOSUB 320
1030 TF = 1: HOME : HGR : SCALE= 1: ROT= 0: HCOLOR= 6
1040 FOR I = 3 TO 135 STEP 33: FOR J = 0 TO 1: HPLOT 0,I +J TO 129,I +J: HPLOT 150,I +J TO 279,I +J: NEXT : NEXT
1050 FOR I = 0 TO 126 STEP 42: FOR J = 0 TO 2: HPLOT I +J,3 TO I +J,153: HPLOT I +J +150,3 TO I +J +150,153: NEXT : NEXT
1060 FOR I = 0 TO 1: HPLOT 0,152 +I TO 129,152 +I: HPLOT 150,152 +I TO 279,152 +I: NEXT : HCOLOR= 5
1070 FOR I = 13 TO 22: READ J,K: XDRAW I AT J,K: NEXT : DATA 137,17,137,50,137,83,137,116,21,141,62,141,104,141,170,141,212,141,254,141
1080 FOR I = 1 TO 4: FOR J = 1 TO 6:X1 = X(J) -14:Y1 = Y(I) -10:L = 22: & POP 200,5
1090 FOR K = Y1 TO Y1 +11: HPLOT X1,K TO X1 +28,K: HPLOT X1,K +L TO X1 +28,K +L:L = L -2: NEXT : NEXT : NEXT
1100 VTAB 21: HTAB 19: PRINT "TIME";: HTAB 26: PRINT "PLAYER'S SCORES": HTAB 20: PRINT "20";: HTAB 26: INVERSE
1110 PRINT P1$;: NORMAL : HTAB 34: PRINT "-";: HTAB 36: PRINT "0100": HTAB 26: PRINT P2$;: HTAB 34: PRINT "-";
1120 HTAB 36: PRINT "0100";: VTAB 8: HTAB 7: PRINT "PRESS ANY KEY TO RESUME PLAY": POKE 48,173: HLIN 6,33 AT 16: POKE 34,20: GOTO 740